﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Text.RegularExpressions;

//namespace PremisPublisher.Common
//{
//    using DataTransferForWCFHelper;
//    using ICSharpCode.SharpZipLib.Zip;

//    /// <summary>
//    /// 用户自定义行为
//    /// </summary>
//    public class CustomActionByUser
//    {
//        Dictionary<string, string> files = new Dictionary<string, string>() { };

//        public CustomActionByUser()
//        {

//        }

//        /// <summary>
//        /// 拷贝
//        /// </summary>
//        /// <param name="log_ac"></param>
//        public void RegexCopy(Action<string> log_ac)
//        {
//            log_ac("正在从服务器获取文件列表...");

//            Layer.ServiceCaller.TcpServiceDispatcher<IPRMIS_U_Contract.IPremisPublish>("0099", svc =>
//            {
//                var r = svc.GetAdditionalFiles();
//                files = new Dictionary<string, string>(r);
//            });


//            foreach (var f in files)
//            {
//                try
//                {
//                    var src = f.Key;

//                    string _buildOutputPath = PublisherReader.GetInstance().BuildOutputPath;
//                    string _sourcePath = PublisherReader.GetInstance().SourcePath;

//                    Regex _ = new Regex(@"\$BuildOutputPath\$");
//                    src = _.Replace(src, _buildOutputPath);

//                    _ = new Regex(@"\$SourcePath\$");
//                    src = _.Replace(src, _sourcePath);

//                    var dest = _buildOutputPath + "\\_PublishedWebsites\\" + f.Value + System.IO.Path.GetFileName(f.Key);

//                    System.IO.File.Copy(src, dest, true);

//                    if (log_ac != null)
//                        log_ac(src + " -> " + dest);
//                }
//                catch (Exception ex)
//                {
//                    if (log_ac != null)
//                        log_ac(ex.Message);
//                }
//            }
//        }

//        /// <summary>
//        /// 发布到wcf服务
//        /// </summary>
//        public void RegexPublish(Action<string> log_ac)
//        {
//            log_ac("正在从服务器获取文件列表...");

//            Layer.ServiceCaller.TcpServiceDispatcher<IPRMIS_U_Contract.IPremisPublish>("0099", svc =>
//            {
//                var r = svc.GetAdditionalFiles();
//                files = new Dictionary<string, string>(r);
//            });

//            List<RFile> rfiles = new List<RFile>();

//            var preader = PublisherReader.GetInstance();

//            log_ac("正在准备上传...");

//            foreach (var f in files)
//            {
//                try
//                {
//                    var src = f.Key;

//                    string _buildOutputPath = preader.BuildOutputPath;
//                    string _sourcePath = preader.SourcePath;

//                    Regex _ = new Regex(@"\$BuildOutputPath\$");
//                    src = _.Replace(src, _buildOutputPath);

//                    _ = new Regex(@"\$SourcePath\$");
//                    src = _.Replace(src, _sourcePath);

//                    var dest = preader.PublishRootDir + "\\" + f.Value + System.IO.Path.GetFileName(f.Key);

//                    //解包 替换 重新打包
//                    if (System.IO.Path.GetExtension(src).Equals(".xap"))
//                    {
//                        var zipTemp = AppDomain.CurrentDomain.BaseDirectory + "\\ZipTemp";
//                        FastZip fastZip = new FastZip();
//                        string fileFilter = null;

//                        fastZip.ExtractZip(src, zipTemp, fileFilter);

//                        var cfg_file = zipTemp + "\\ServiceReferences.ClientConfig";


//                    }

//                    rfiles.Add(new RFile(src, dest, "utf-8"));
//                }
//                catch (Exception ex)
//                {
//                    if (log_ac != null)
//                        log_ac(ex.Message);
//                }
//            }

//            foreach (var rf in rfiles)
//            {
//                rf.Publish(line =>
//                {
//                    log_ac(line.SourcePath + "->" + line.TargetPath);
//                });
//            }

//            log_ac("所有文件上传完毕");
//        }
//    }
//}
